home *** CD-ROM | disk | FTP | other *** search
/ EuroCD 3 / EuroCD 3.iso / Programming / vbcc / machines / amigappc / include / string.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-06-24  |  2.3 KB  |  73 lines

  1. /* string.h - vbcc PowerPC */
  2.  
  3. #ifndef __STRING_H
  4. #define __STRING_H 1
  5.  
  6. #include <stddef.h>
  7.  
  8. void *memcpy(void *s1,const void *s2,size_t n);
  9. void *memmove(void *,const void *,size_t);
  10. void *memset(void *,int,size_t);
  11. int memcmp(const void *,const void *,size_t);
  12. void *memchr(const void *,int,size_t);
  13. char *strcat(char *,const char *);
  14. char *strncat(char *,const char *,size_t);
  15. char *strchr(const char *,int);
  16. size_t strcspn(const char *,const char *);
  17. char *strpbrk(const char *,const char *);
  18. char *strrchr(const char *,int);
  19. size_t strspn(const char *,const char *);
  20. char *strstr(const char *,const char *);
  21. char *strtok(char *,const char *);
  22. char *strerror(int);
  23.  
  24. /* PowerPC inline functions */
  25. size_t strlen(__reg("r3") const char *) =
  26.                 "\tsubi\t4,3,1\n"
  27.                 "\tlbzu\t0,1(4)\n"
  28.                 "\tcmpwi\t0,0\n"
  29.                 "\tbne\t$-8\n"
  30.                 "\tsub\t3,4,3";
  31. char *strcpy(__reg("r3") char *, __reg("r4") const char *) =
  32.                 "\tsubi\t5,3,1\n"
  33.                 "\tsubi\t4,4,1\n"
  34.                 "\tlbzu\t0,1(4)\n"
  35.                 "\tstbu\t0,1(5)\n"
  36.                 "\tcmpwi\t0,0\n"
  37.                 "\tbne\t$-12";
  38. char *strncpy(__reg("r3") char *, __reg("r4") const char *,
  39.               __reg("r5") size_t) =
  40.                 "\tcmpwi\t5,0\n"
  41.                 "\tbeq\t$+32\n"
  42.                 "\tmtctr\t5\n"
  43.                 "\tsubi\t5,3,1\n"
  44.                 "\tsubi\t4,4,1\n"
  45.                 "\tlbzu\t0,1(4)\n"
  46.                 "\tstbu\t0,1(5)\n"
  47.                 "\tcmpwi\t0,0\n"
  48.                 "\tbdnzf\t2,$-12";
  49. int strcmp(__reg("r3") const char *, __reg("r4") const char *) =
  50.                 "\tsubi\t5,3,1\n"
  51.                 "\tsubi\t4,4,1\n"
  52.                 "\tlbzu\t3,1(5)\n"
  53.                 "\tlbzu\t6,1(4)\n"
  54.                 "\tsub.\t3,3,6\n"
  55.                 "\tbne\t$+12\n"
  56.                 "\tcmpwi\t6,0\n"
  57.                 "\tbne\t$-20";
  58. int strncmp(__reg("r3") const char *, __reg("r4") const char *,
  59.             __reg("r5") size_t) =
  60.                 "\tsubi\t6,3,1\n"
  61.                 "\tli\t3,0\n"
  62.                 "\tcmpwi\t5,0\n"
  63.                 "\tbeq\t$+36\n"
  64.                 "\tsubi\t4,4,1\n"
  65.                 "\tmtctr\t5\n"
  66.                 "\tlbzu\t3,1(6)\n"
  67.                 "\tlbzu\t5,1(4)\n"
  68.                 "\tsub.\t3,3,5\n"
  69.                 "\tbne\t$+12\n"
  70.                 "\tcmpwi\t6,0\n"
  71.                 "\tbdnzf\t2,$-20";
  72. #endif
  73.